package com.halden.mycache.support.EvictStrategy;

import com.halden.mycache.core.Impl.CacheValue;

/**
 * 内存淘汰策略接口
 * @since 0.0.1
 */
public interface EvictStrategy<K,V> {
    /**
     * 进行内存淘汰并增加元素，若无须淘汰则不淘汰
     * @param context
     * @since 0.0.1
     */
    void evict(ICacheEvictContext<K,V> context);

    /**
     * 获取元素，并重置一些状态
     * @param context
     * @return
     * @since 0.0.1
     */
    CacheValue<V> visit(ICacheEvictContext<K,V> context);
}
